In legacy telecommunications networks, a communication between two parties, usually bidirectional, required the reservation of a path or circuit between the two parties. This type of network was referred to as a “circuit-switched” network since the two-way communication, herein referred to as a “call”, took place using resources, e.g., physical circuits, that were dedicated for the exclusive use by that call for the duration of the call. A large percentage of a typical voice call consists of silence. During periods of silence, no information is communicated between the parties, and the resources dedicated to the call in a circuit-switched are not necessary during these periods of silence. In circuit-switched networks, however, these resources cannot be put to use for another call during these periods of silence. Thus, resources in a circuit-switched network that are dedicated to a call with large portions of silence, such as a voice call, are often largely underutilized.
With the advent of digital packet networks, such as the Internet, there is a trend towards sending calls over packet-switched networks rather than circuit-switched networks. For example, voice over Internet protocol, or VoIP, is a protocol which allows voice calls to be sent over the Internet or other packet-switched network that supports the Internet protocol (IP). By using a packet-switched protocol rather than a circuit-switched protocol, it is possible for multiple simultaneous calls to share the same network resources, in part because no data is communicated between the parties of a call if both parties are silent, and the unused bandwidth is thus available for use by other calls. In this manner, the network bandwidth may be shared among multiple calls in a way that allows the full bandwidth of the network to be used.
However, one disadvantage of using a packet-switched network is that since the available bandwidth is shared by many calls, the latency, i.e., the time that it takes for a packet to get from source to destination, and throughput, i.e., the amount of packets that will travel from source to destination in a given amount of time, is not always constant and may vary depending on the instantaneous load on the network. The variation of network latency over time is referred to as “jitter”.
Also, most packet-switched networks are designed to allow a packet that is going from point A to B to travel one of potentially many paths through the network. By having more than one path from A to B, the network will still sustain traffic from A to B even if one of the paths is down or out of service. If one path from A to B is down, then packets will use another path from A to B. While this resiliency is advantageous because it increases overall reliability of the network, a side effect of this resiliency is that packets in the same call may travel different paths. Because each of the different paths may have different latency and throughput characteristics, packets sent in a particular sequence from A may arrive out of sequence at B. Even if the packets arrive in sequence, the packets may suffer various amounts of jitter.
This characteristic of packet-switched networks is not a problem if it doesn't matter whether data that is being communicated from point A to point B arrives in order or within a certain allowable delay. For example, for a bulk file transfer from A to B across the network, it largely does not matter whether the transfer rate was constant or not. However, because VoIP calls happen in real time, the quality of the call suffers if the voice data stream between A and B starts and stops or if the throughput varies wildly. In short, VoIP calls require a relatively constant throughput, i.e., with little to no “jitter”.
One approach that has been used to mitigate network jitter is to use what is commonly referred to as a jitter buffer, which is a temporary storage, often a first-in, first-out (FIFO) queue, which receives packets at irregular intervals due to network jitter, and which outputs the packets at regular intervals, i.e., having no jitter. The buffer must be designed to be large enough to be able to continue to periodically output packets from the queue while waiting for the arrival of the next packet in the series, which may be delayed due to network jitter. The size that the jitter buffer must be is a function of the maximum amount of jitter that might be suffered by the incoming packet stream—the larger the potential jitter, the larger the jitter buffer must be. Larger jitter buffers require larger amounts of memory to be set aside for the jitter buffers exclusive use.
Many circuit-switched networks also use jitter buffers to accommodate the levels of jitter exhibited by these kinds of networks. However, the levels of jitter seen in packet networks may be many orders of magnitude greater than levels of jitter seen in circuit-switched networks, and thus require relatively large jitter buffers compared to jitter buffers used for circuit-switched networks.
The problem is compounded whenever a packet network and a circuit-switched network interact, such as in a media gateway, which is a network node that provides an interface between a circuit-switched network, such as the public switched telephone network (PSTN), and a packet-switched network, such as the Internet. Such as node must manage jitter on both networks and also between both networks.
Conventional implementations of jitter buffers create jitter buffers big enough to tolerate the maximum jitter that may occur in each network or across the networks. However, this approach wastes resources by allocating more memory for the jitter buffer than may actually be needed by that network or at that time.
Accordingly, in light of these disadvantages associated with jitter over packet-switched networks, there exists a need for methods, systems, and computer readable media for providing adaptive jitter buffer management based on packet statistics for a media gateway.